{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "idukki_kernel_svm_Victor.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "toc_visible": true,
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LWd1UlMnhT2s",
        "colab_type": "text"
      },
      "source": [
        "## Importing the libraries"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YvGPUQaHhXfL",
        "colab_type": "code",
        "outputId": "a22b3a69-c246-4ac0-8ee1-1c6ca534b343",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 156
        }
      },
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.preprocessing import StandardScaler\n",
        "from sklearn.svm import SVC\n",
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n",
        "from matplotlib.colors import ListedColormap\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "from sklearn import metrics\n",
        "import seaborn as sns\n",
        "import matplotlib.pyplot as plt\n",
        "import math\n",
        "%matplotlib inline"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n",
            "\n",
            "Enter your authorization code:\n",
            "··········\n",
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
            "  import pandas.util.testing as tm\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "K1VMqkGvhc3-",
        "colab_type": "text"
      },
      "source": [
        "## Importing the dataset"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M52QDmyzhh9s",
        "colab_type": "code",
        "outputId": "1ceb7610-0535-4e52-ff5a-cc284539baa9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "dataset = pd.read_csv('./drive/My Drive/Idukki_dataset/short_database_idukki.csv')\n",
        "# remove outliers (-9999) from all columns and delete corresponding entire row.\n",
        "# this accounts for 5% of total data.\n",
        "\n",
        "dataset = dataset[dataset.geology != -9999] #drop geology outliers\n",
        "dataset = dataset[dataset.geomorphology != -9999] #drop geomorphology outliers\n",
        "dataset = dataset[dataset.dem != -9999] #drop dem outliers\n",
        "dataset = dataset[dataset.rainfall != -9999] #drop rainfall outliers\n",
        "dataset = dataset[dataset['road distance'] != -9999] #drop road distance outliers\n",
        "dataset = dataset[dataset.slope != -9999] #drop slope outliers\n",
        "dataset = dataset[dataset.stream_power_index != -9999] #drop stream_power_index outliers\n",
        "dataset = dataset[dataset['distance from streams'] != -9999] #drop distance from streams outliers\n",
        "dataset = dataset[dataset.topographic_wetness_index != -9999] #drop topographic_wetness_index outliers\n",
        "dataset = dataset[dataset.distance_from_lineaments != -9999] #drop distance_from_lineaments outliers\n",
        "\n",
        "X = dataset.iloc[:, :-1].values\n",
        "y = dataset.iloc[:, -1].values\n",
        "print(f'After filtering outliers, X shape: {X.shape} y shape: {y.shape}')"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "After filtering outliers, X shape: (296759, 12) y shape: (296759,)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rG67pMQwh6Ut",
        "colab_type": "code",
        "outputId": "eabb4c4d-faa4-4be9-d7ed-dab4fd3ee134",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 351
        }
      },
      "source": [
        "print(f'y data positive: {np.count_nonzero(y == 1)/len(y) * 100}')\n",
        "dataset.describe()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "y data positive: 13.460080401942317\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Longitude</th>\n",
              "      <th>Lattitude</th>\n",
              "      <th>geology</th>\n",
              "      <th>geomorphology</th>\n",
              "      <th>dem</th>\n",
              "      <th>rainfall</th>\n",
              "      <th>road distance</th>\n",
              "      <th>slope</th>\n",
              "      <th>stream_power_index</th>\n",
              "      <th>distance from streams</th>\n",
              "      <th>topographic_wetness_index</th>\n",
              "      <th>distance_from_lineaments</th>\n",
              "      <th>Landslide</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "      <td>296759.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>76.922005</td>\n",
              "      <td>9.866787</td>\n",
              "      <td>3.020710</td>\n",
              "      <td>1.797742</td>\n",
              "      <td>1.486499</td>\n",
              "      <td>1.486499</td>\n",
              "      <td>2.519213</td>\n",
              "      <td>2.367200</td>\n",
              "      <td>1.995667</td>\n",
              "      <td>1.428091</td>\n",
              "      <td>3.048113</td>\n",
              "      <td>3.217722</td>\n",
              "      <td>0.134601</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>0.044112</td>\n",
              "      <td>0.043504</td>\n",
              "      <td>0.142413</td>\n",
              "      <td>0.741522</td>\n",
              "      <td>0.499819</td>\n",
              "      <td>0.499819</td>\n",
              "      <td>1.198152</td>\n",
              "      <td>1.007293</td>\n",
              "      <td>0.364939</td>\n",
              "      <td>0.760744</td>\n",
              "      <td>0.703476</td>\n",
              "      <td>1.724394</td>\n",
              "      <td>0.341297</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>76.842500</td>\n",
              "      <td>9.788333</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>76.883889</td>\n",
              "      <td>9.829167</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>76.921944</td>\n",
              "      <td>9.867222</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>76.960278</td>\n",
              "      <td>9.904444</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>3.000000</td>\n",
              "      <td>4.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>76.998889</td>\n",
              "      <td>9.944722</td>\n",
              "      <td>4.000000</td>\n",
              "      <td>4.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>2.000000</td>\n",
              "      <td>6.000000</td>\n",
              "      <td>7.000000</td>\n",
              "      <td>5.000000</td>\n",
              "      <td>5.000000</td>\n",
              "      <td>5.000000</td>\n",
              "      <td>6.000000</td>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           Longitude      Lattitude  ...  distance_from_lineaments      Landslide\n",
              "count  296759.000000  296759.000000  ...             296759.000000  296759.000000\n",
              "mean       76.922005       9.866787  ...                  3.217722       0.134601\n",
              "std         0.044112       0.043504  ...                  1.724394       0.341297\n",
              "min        76.842500       9.788333  ...                  1.000000       0.000000\n",
              "25%        76.883889       9.829167  ...                  2.000000       0.000000\n",
              "50%        76.921944       9.867222  ...                  3.000000       0.000000\n",
              "75%        76.960278       9.904444  ...                  4.000000       0.000000\n",
              "max        76.998889       9.944722  ...                  6.000000       1.000000\n",
              "\n",
              "[8 rows x 13 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 3
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8EM55M9ioZFR",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#plot histogram helper function\n",
        "def plot_histogram(axis_id, data_col, title):\n",
        "  axis_id.hist(data_col)\n",
        "  axis_id.set_title(title)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "octEbHNelnuX",
        "colab_type": "code",
        "outputId": "9ec237ab-a71c-4568-f6f8-536da6305b24",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 421
        }
      },
      "source": [
        "geology_col = dataset['geology']\n",
        "geomorphology_col = dataset['geomorphology']\n",
        "dem_col = dataset['dem']\n",
        "rainfall_col = dataset['rainfall']\n",
        "\n",
        "road_distance_col = dataset['road distance']\n",
        "slope_col = dataset['slope']\n",
        "stream_power_index_col = dataset['stream_power_index']\n",
        "distance_from_streams_col = dataset['distance from streams']\n",
        "\n",
        "fig, (ax) = plt.subplots(ncols=4, nrows=1, sharey=True, figsize=(10, 5))\n",
        "\n",
        "plot_histogram(ax[0], geology_col, title='geology')\n",
        "plot_histogram(ax[1], geomorphology_col, title='geomorphology')\n",
        "plot_histogram(ax[2], dem_col, title='dem')\n",
        "plot_histogram(ax[3], rainfall_col, title='rainfall')\n",
        "\n",
        "count_empty_field = np.count_nonzero(dem_col == -9999)\n",
        "percent_empty_val = count_empty_field/len(dem_col) * 100\n",
        "print(f\"empty values: {percent_empty_val} %\")\n",
        "\n",
        "#features\n",
        "features = dataset.columns[:-1]\n",
        "print(f\"feautures: {features}\")"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "empty values: 0.0 %\n",
            "feautures: Index(['Longitude', 'Lattitude', 'geology', 'geomorphology', 'dem', 'rainfall',\n",
            "       'road distance', 'slope', 'stream_power_index', 'distance from streams',\n",
            "       'topographic_wetness_index', 'distance_from_lineaments'],\n",
            "      dtype='object')\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x360 with 4 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YvxIPVyMhmKp",
        "colab_type": "text"
      },
      "source": [
        "## Splitting the dataset into the Training set and Test set"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AVzJWAXIhxoC",
        "colab_type": "code",
        "outputId": "c455b3ac-d904-4f48-9e1a-c49b3e78891c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 153
        }
      },
      "source": [
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)\n",
        "print('X_train shape:')\n",
        "print(X_train.shape)\n",
        "print('y_train shape:')\n",
        "print(y_train.shape)\n",
        "print('X_test shape:')\n",
        "print(X_test.shape)\n",
        "print('y_test shape:')\n",
        "print(y_test.shape)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "X_train shape:\n",
            "(237407, 12)\n",
            "y_train shape:\n",
            "(237407,)\n",
            "X_test shape:\n",
            "(59352, 12)\n",
            "y_test shape:\n",
            "(59352,)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aMV6oypWjbCz",
        "colab_type": "text"
      },
      "source": [
        "# Random Forest Classifier"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SYDgPWb6pBJh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def generate_features_weightage_plot(feature_imp):\n",
        "  # Creating a bar plot\n",
        "  sns.barplot(x=feature_imp, y=feature_imp.index)\n",
        "  # Add labels to your graph\n",
        "  plt.xlabel('Feature Importance Score')\n",
        "  plt.ylabel('Features')\n",
        "  plt.title(\"Visualizing Important Features\")\n",
        "  plt.legend()\n",
        "  plt.show()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3w3s3_zjfCG5",
        "colab_type": "code",
        "outputId": "b580fc3a-9811-4739-9d96-9f10bbd9ecc9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 567
        }
      },
      "source": [
        "# using all the features available\n",
        "# Create a Gaussian Classifier\n",
        "clf=RandomForestClassifier(n_estimators=100)\n",
        "\n",
        "#Train the model using the training sets y_pred=clf.predict(X_test)\n",
        "clf.fit(X_train,y_train)\n",
        "y_pred=clf.predict(X_test)\n",
        "\n",
        "# Model Accuracy, how often is the classifier correct?\n",
        "print(\"Accuracy with all features:\",metrics.accuracy_score(y_test, y_pred))\n",
        "\n",
        "# importances of features currently\n",
        "feature_imp = pd.Series(clf.feature_importances_,index=features).sort_values(ascending=False)\n",
        "print(f\"feature_imp:\")\n",
        "print(feature_imp)\n",
        "\n",
        "generate_features_weightage_plot(feature_imp=feature_imp)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "No handles with labels found to put in legend.\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Accuracy with all features: 0.978753875185335\n",
            "feature_imp:\n",
            "Lattitude                    0.408837\n",
            "Longitude                    0.396365\n",
            "distance_from_lineaments     0.057305\n",
            "road distance                0.045714\n",
            "slope                        0.026788\n",
            "distance from streams        0.017623\n",
            "geomorphology                0.014404\n",
            "topographic_wetness_index    0.013836\n",
            "rainfall                     0.006346\n",
            "dem                          0.006298\n",
            "stream_power_index           0.005790\n",
            "geology                      0.000695\n",
            "dtype: float64\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HhNtoOm3Y7Xz",
        "colab_type": "code",
        "outputId": "aa8c6159-f22b-4a0e-c686-a29a9233a172",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 533
        }
      },
      "source": [
        "# removing features lat and long since they assume all the importance\n",
        "# and trying with remaining 10 features.\n",
        "features_modified = ['geology', 'geomorphology', 'dem', \n",
        "                     'rainfall', 'road distance', 'slope', \n",
        "                     'stream_power_index', 'distance from streams', \n",
        "                     'topographic_wetness_index', 'distance_from_lineaments']\n",
        "X = dataset[features_modified]\n",
        "y = dataset['Landslide']\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)\n",
        "\n",
        "clf=RandomForestClassifier(n_estimators=100)\n",
        "clf.fit(X_train,y_train)\n",
        "y_pred=clf.predict(X_test)\n",
        "print(\"Accuracy with lat and long features removed:\",metrics.accuracy_score(y_test, y_pred))\n",
        "\n",
        "# importances of features currently\n",
        "feature_imp = pd.Series(clf.feature_importances_,index=features_modified).sort_values(ascending=False)\n",
        "print(f\"feature_imp:\")\n",
        "print(feature_imp)\n",
        "\n",
        "generate_features_weightage_plot(feature_imp=feature_imp)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "No handles with labels found to put in legend.\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Accuracy with lat and long features removed: 0.869237767893247\n",
            "feature_imp:\n",
            "distance_from_lineaments     0.278200\n",
            "road distance                0.264284\n",
            "distance from streams        0.111866\n",
            "geomorphology                0.104991\n",
            "slope                        0.096689\n",
            "topographic_wetness_index    0.047842\n",
            "dem                          0.030353\n",
            "rainfall                     0.029295\n",
            "stream_power_index           0.025194\n",
            "geology                      0.011286\n",
            "dtype: float64\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cVAkhOCSmPgS",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# based on the finding from graph, some features at the lower end could be removed.\n",
        "# ref: https://www.datacamp.com/community/tutorials/random-forests-classifier-python\n",
        "# 'Lattitude', 'Longitude', 'distance_from_lineaments', 'road distance', 'slope', \n",
        "# 'distance from streams','geomorphology', 'topographic_wetness_index' \n",
        "features_modified = ['Lattitude', 'Longitude', 'distance_from_lineaments', \n",
        "                    'road distance', 'slope', 'distance from streams',\n",
        "                    'geomorphology', 'topographic_wetness_index']\n",
        "X = dataset[features_modified]\n",
        "y = dataset['Landslide']\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)\n",
        "# check if accuracy has improved\n",
        "#Create a Gaussian Classifier\n",
        "clf=RandomForestClassifier(n_estimators=100)\n",
        "\n",
        "#Train the model using the training sets y_pred=clf.predict(X_test)\n",
        "clf.fit(X_train,y_train)\n",
        "\n",
        "# Model Accuracy, how often is the classifier correct?\n",
        "y_pred=clf.predict(X_test)\n",
        "print(\"Accuracy with least important features dropped:\",metrics.accuracy_score(y_test, y_pred))"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sQlD_fhni6D5",
        "colab_type": "text"
      },
      "source": [
        "## Trying with non-classified dataset"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kaD00weRjAAv",
        "colab_type": "code",
        "outputId": "3ff7c3b0-4563-4de4-eff0-7a6feda6bb9e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 317
        }
      },
      "source": [
        "df_non_class = pd.read_csv('./drive/My Drive/Idukki_dataset/short_data_idukki_non-classified.csv')\n",
        "# remove outliers\n",
        "df_non_class = df_non_class[df_non_class['Aspect'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['roaddis'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['slope'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['spi'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['strdis'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['twi'] != -9999]\n",
        "df_non_class = df_non_class[df_non_class['dem'] != -9999]\n",
        "df_non_class.describe()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Longitude</th>\n",
              "      <th>Lattitude</th>\n",
              "      <th>Aspect</th>\n",
              "      <th>lineadis</th>\n",
              "      <th>rainfall</th>\n",
              "      <th>roaddis</th>\n",
              "      <th>slope</th>\n",
              "      <th>spi</th>\n",
              "      <th>strdis</th>\n",
              "      <th>twi</th>\n",
              "      <th>dem</th>\n",
              "      <th>Landslide</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "      <td>281082.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>76.920599</td>\n",
              "      <td>9.869717</td>\n",
              "      <td>169.977307</td>\n",
              "      <td>1904.690919</td>\n",
              "      <td>3444.510939</td>\n",
              "      <td>1494.679976</td>\n",
              "      <td>19.444350</td>\n",
              "      <td>10.968168</td>\n",
              "      <td>1004.510198</td>\n",
              "      <td>4.594491</td>\n",
              "      <td>522.099651</td>\n",
              "      <td>0.138725</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>0.044590</td>\n",
              "      <td>0.042766</td>\n",
              "      <td>104.471427</td>\n",
              "      <td>1305.487694</td>\n",
              "      <td>16.096581</td>\n",
              "      <td>1098.752495</td>\n",
              "      <td>9.426984</td>\n",
              "      <td>5.887097</td>\n",
              "      <td>1010.644179</td>\n",
              "      <td>0.693494</td>\n",
              "      <td>233.031596</td>\n",
              "      <td>0.345660</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>76.842500</td>\n",
              "      <td>9.788333</td>\n",
              "      <td>0.194888</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>3363.710000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.176743</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>2.462460</td>\n",
              "      <td>-49.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>76.881667</td>\n",
              "      <td>9.834167</td>\n",
              "      <td>64.698600</td>\n",
              "      <td>858.021000</td>\n",
              "      <td>3438.490000</td>\n",
              "      <td>577.062000</td>\n",
              "      <td>12.233900</td>\n",
              "      <td>6.517930</td>\n",
              "      <td>254.558000</td>\n",
              "      <td>4.110800</td>\n",
              "      <td>417.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>76.919167</td>\n",
              "      <td>9.871111</td>\n",
              "      <td>191.915000</td>\n",
              "      <td>1730.920000</td>\n",
              "      <td>3450.830000</td>\n",
              "      <td>1306.980000</td>\n",
              "      <td>19.310300</td>\n",
              "      <td>10.512700</td>\n",
              "      <td>615.549000</td>\n",
              "      <td>4.449810</td>\n",
              "      <td>574.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>76.960278</td>\n",
              "      <td>9.906389</td>\n",
              "      <td>249.386000</td>\n",
              "      <td>2684.120000</td>\n",
              "      <td>3454.450000</td>\n",
              "      <td>2193.290000</td>\n",
              "      <td>26.167100</td>\n",
              "      <td>14.755300</td>\n",
              "      <td>1489.460000</td>\n",
              "      <td>4.927840</td>\n",
              "      <td>690.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>76.998889</td>\n",
              "      <td>9.944722</td>\n",
              "      <td>360.000000</td>\n",
              "      <td>6705.520000</td>\n",
              "      <td>3467.750000</td>\n",
              "      <td>5666.270000</td>\n",
              "      <td>68.651400</td>\n",
              "      <td>76.702500</td>\n",
              "      <td>4844.140000</td>\n",
              "      <td>8.535450</td>\n",
              "      <td>1092.000000</td>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           Longitude      Lattitude  ...            dem      Landslide\n",
              "count  281082.000000  281082.000000  ...  281082.000000  281082.000000\n",
              "mean       76.920599       9.869717  ...     522.099651       0.138725\n",
              "std         0.044590       0.042766  ...     233.031596       0.345660\n",
              "min        76.842500       9.788333  ...     -49.000000       0.000000\n",
              "25%        76.881667       9.834167  ...     417.000000       0.000000\n",
              "50%        76.919167       9.871111  ...     574.000000       0.000000\n",
              "75%        76.960278       9.906389  ...     690.000000       0.000000\n",
              "max        76.998889       9.944722  ...    1092.000000       1.000000\n",
              "\n",
              "[8 rows x 12 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 19
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8Y4sHAmAjLen",
        "colab_type": "code",
        "outputId": "a9971f4d-571c-4da1-ae96-dbbde02f7954",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 85
        }
      },
      "source": [
        "X = df_non_class.iloc[:, 0:-1].to_numpy()\n",
        "y = df_non_class.iloc[:, -1].to_numpy()\n",
        "features_engg = ['Aspect', 'lineadis', 'rainfall', \n",
        "            'roaddis','slope', 'spi', \n",
        "            'strdis', 'twi', 'dem']\n",
        "\n",
        "X = df_non_class[features_engg]\n",
        "y = df_non_class['Landslide']\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)\n",
        "\n",
        "# print sizes\n",
        "print(f'X shape: {X.shape}, y shape: {y.shape}')\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)\n",
        "print(f'X_train shape: {X_train.shape}, y_train shape: {y_train.shape}')\n",
        "print(f'X_test shape: {X_test.shape}, y_test shape: {y_test.shape}')\n",
        "print(f'true values: {np.count_nonzero(y == 1)/len(y) * 100} %')"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "X shape: (281082, 11), y shape: (281082,)\n",
            "X_train shape: (224865, 11), y_train shape: (224865,)\n",
            "X_test shape: (56217, 11), y_test shape: (56217,)\n",
            "true values: 13.8724642630976 %\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "leO4l1Jelsp7",
        "colab_type": "code",
        "outputId": "2cc43fd6-595c-4f0c-d1c7-ae2193013d28",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 584
        }
      },
      "source": [
        "clf=RandomForestClassifier(n_estimators=100)\n",
        "clf.fit(X_train,y_train)\n",
        "y_pred=clf.predict(X_test)\n",
        "print(\"Accuracy with lat and long features removed:\",metrics.accuracy_score(y_test, y_pred))\n",
        "\n",
        "# importances of features currently\n",
        "feature_imp = pd.Series(clf.feature_importances_,index=features_engg).sort_values(ascending=False)\n",
        "print(f\"feature_imp:\")\n",
        "print(feature_imp)\n",
        "\n",
        "generate_features_weightage_plot(feature_imp=feature_imp)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "X shape: (281082, 9), y shape: (281082,)\n",
            "X_train shape: (224865, 9), y_train shape: (224865,)\n",
            "X_test shape: (56217, 9), y_test shape: (56217,)\n",
            "true values: 13.8724642630976 %\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "No handles with labels found to put in legend.\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Accuracy with lat and long features removed: 0.9746873721472152\n",
            "feature_imp:\n",
            "rainfall    0.224284\n",
            "roaddis     0.175730\n",
            "lineadis    0.165959\n",
            "strdis      0.141981\n",
            "dem         0.124053\n",
            "Aspect      0.065502\n",
            "slope       0.037650\n",
            "spi         0.032490\n",
            "twi         0.032350\n",
            "dtype: float64\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rMv0XvWrl5Sl",
        "colab_type": "code",
        "outputId": "7e036b25-7c62-4a12-932d-ba8ccb687922",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 231
        }
      },
      "source": [
        "# calculation of TP, TN, FP, FN and sensitivity\n",
        "print(f'y_pred shape: {y_pred.shape}, y_test shape: {y_test.shape}')\n",
        "# TP and FP\n",
        "tot_posit = np.count_nonzero(y_test == 1)\n",
        "print(f'total positives in test data: {tot_posit}')\n",
        "# idx where test data is positive\n",
        "idx_posit = np.where(y_test == 1)\n",
        "# for same idx, check y_pred. ideally these two vectors should be matching\n",
        "y_pred_pos = y_pred[idx_posit]\n",
        "TP =np.count_nonzero(y_pred_pos == 1)\n",
        "print(f'number of true positives: {TP}')\n",
        "FP = np.count_nonzero(y_pred_pos != 1)\n",
        "print(f'number of false positives: {FP}')\n",
        "# TODO: use the idx_posit if row details of failing cases required.\n",
        "\n",
        "# TN and FN\n",
        "tot_negat = np.count_nonzero(y_test == 0)\n",
        "print(f'total negatives in test data: {tot_negat}')\n",
        "# idx where test data is positive\n",
        "idx_negat = np.where(y_test == 0)\n",
        "# for same idx, check y_pred. ideally these two vectors should be matching\n",
        "y_pred_negat = y_pred[idx_negat]\n",
        "TN = np.count_nonzero(y_pred_negat == 0)\n",
        "print(f'number of true negatives: {TN}')\n",
        "FN = np.count_nonzero(y_pred_negat != 0)\n",
        "print(f'number of false negatives: {FN}')\n",
        "#Calculating sensitivity, specificity, likelihood ratio and distance from perfect point\n",
        "sensitivity = TP/(TP+FN)\n",
        "specificity = TN/(FP+TN)\n",
        "print (f'sensitivity: {sensitivity}')\n",
        "print (f'specificity: {specificity}')\n",
        "LR = sensitivity/(1-specificty)\n",
        "print (f'Likelihood ratio: {LR}')\n",
        "Dist_PP = math.sqrt(math.pow((1-sensitivity),2)+math.pow((1-specificity),2))\n",
        "print (f'Distance from perfect point: {Dist_PP}')\n"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "NameError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-1-152115c1fbc1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# calculation of TP, TN, FP, FN and sesitivity\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'y_pred shape: {y_pred.shape}, y_test shape: {y_test.shape}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;31m# TP and FP\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mtot_posit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount_nonzero\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'total positives in test data: {tot_posit}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mNameError\u001b[0m: name 'y_pred' is not defined"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "e6eBtViEurp0",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}